"""
1247. 交换字符使得字符串相同

有两个长度相同的字符串 s1 和 s2，且它们其中 只含有 字符 "x" 和 "y"，你需要通过「交换字符」的方式使这两个字符串相同。

每次「交换字符」的时候，你都可以在两个字符串中各选一个字符进行交换。

交换只能发生在两个不同的字符串之间，绝对不能发生在同一个字符串内部。也就是说，我们可以交换 s1[i] 和 s2[j]，但不能交换 s1[i] 和 s1[j]。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/minimum-swaps-to-make-strings-equal
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
"""
class Solution:
    def minimumSwap(self, s1: str, s2: str) -> int:
        #记录s1[i] = x,s2[i] = y的下标序列
        xy = []
        #记录s1[i] = y,s2[i] = x的下标序列
        yx = []
        sz = len(s1)
        for i in range(sz):
            if s1[i] == s2[i]:
                continue
            if s1[i] == 'x':
                xy.append(i)
            else:
                yx.append(i)
        
        sz_xy = len(xy)
        sz_yx = len(yx)

        if (sz_xy + sz_yx) % 2:
            return -1
        else:
            return int(sz_xy//2 + sz_yx//2 + sz_xy % 2 + sz_yx % 2)

sss = Solution()
s1 = "xxyyxyxyxx"
s2 = "xyyxyxxxyx" 
sss.minimumSwap(s1,s2)
